The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
A typical computer network consists of various devices such as routers, switches, wireless access points, firewalls, etc. FIG. 16 illustrates an example network that includes such elements.
A typical network device provides a command interface that is accessible using the telnet protocol, a secure shell (SSH) connection, or serial port interface to create, update, retrieve and store management information relating to the device. A network management station (NMS) can deliver commands through such an interface to provide a higher level or enhanced management capability to the network operator or administrator.
To interoperate with a network device, the NMS must have knowledge of what commands the device supports, so that the NMS can deliver commands that are compatible with the device's command interface and that produce desired results. One way to provide such knowledge to an NMS is by adding command definitions to the NMS manually, either through a programmatic approach by updating the computer program code that forms the NMS, or by changing a separate device data table that is used by the NMS. However, this approach is slow and error-prone, especially when the NMS supports a large number of different devices.
Further, whenever a change occurs in the set of commands that a particular device type supports, a change is required to the NMS. Thus, this approach requires ongoing software development efforts to keep the NMS compatible with the commands that devices recognize or support.
Therefore, there is a need for a better way to provide knowledge about commands that a network device supports.
A typical network device, such as a router or a switch as used in packet-switched networks, provides a command line interface (CLI) that is accessible through Telnet, Secure Shell (SSH) and serial port interface for changing the device status or configuration. Each configuration command for the device has an associated syntax. A Network Management Station (NMS) can use the configuration commands to provide a higher level or enhanced management capability to the network operator. The NMS requires knowledge of the device configuration commands and the syntax of the commands to perform changing the configuration of a device.
One disadvantage with a CLI is that it is suitable for a human operator, but not for programs that can configure and control the device. A programmable API is required for such tasks. The devices can be built with programmable APIs, but providing a programmable interface on already existing systems and devices can be very expensive, if not impractical. It would be beneficial to have an automated approach for generating a programmable interface for an existing device or for devices that are already deployed at operating sites.
The NETCONF network device configuration protocol under development by the Internet Engineering Task Force (IETF) provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML) based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized on top of a Remote Procedure Call (RPC) layer. NETCONF is an emerging standard, and many network devices do not presently support it. Further, many network devices cannot directly execute commands that are delivered in XML, and many network management applications cannot interoperate with XML documents that conform to NETCONF.
Certain past approaches have attempted to implement a configuration interface layer on top of the CLI supported by Cisco IOS Software from Cisco Systems, Inc. These approaches have supported a narrow range of device types and configuration. These implementations also have required manual coding of the CLI rules, and since the data model is custom, have also required manual coding of processes for transformation of the model to the CLI and CLI to the model.